import { useRobotStore } from '@/stores/robotStore';

/**
 * 机器人配置 Composable
 * 处理机器人IP、端口等配置相关的逻辑
 */
export function useRobotConfig() {
  const robotStore = useRobotStore();

  /**
   * 更新机器人IP地址
   * @param {string} ip - 新的IP地址
   */
  const updateRobotIp = (ip) => {
    if (!ip || typeof ip !== 'string') {
      console.warn('无效的IP地址:', ip);
      return;
    }
    
    // 简单的IP格式验证
    const ipRegex = /^(\d{1,3}\.){3}\d{1,3}$/;
    if (!ipRegex.test(ip)) {
      robotStore.addLog(`IP地址格式无效: ${ip}`, 'error');
      return;
    }
    
    robotStore.updateRobotConfig(ip, robotStore.robotPort);
    robotStore.addLog(`机器人IP已更新: ${ip}`, 'info');
  };

  /**
   * 更新机器人端口
   * @param {string|number} port - 新的端口号
   */
  const updateRobotPort = (port) => {
    const portNum = parseInt(port);
    
    if (isNaN(portNum) || portNum < 1 || portNum > 65535) {
      robotStore.addLog(`端口号无效: ${port}`, 'error');
      return;
    }
    
    robotStore.updateRobotConfig(robotStore.robotIp, portNum.toString());
    robotStore.addLog(`机器人端口已更新: ${portNum}`, 'info');
  };

  /**
   * 更新完整的机器人配置
   * @param {string} ip - IP地址
   * @param {string|number} port - 端口号
   */
  const updateRobotConfig = (ip, port) => {
    const portNum = parseInt(port);
    
    // 验证IP格式
    const ipRegex = /^(\d{1,3}\.){3}\d{1,3}$/;
    if (!ipRegex.test(ip)) {
      robotStore.addLog(`IP地址格式无效: ${ip}`, 'error');
      return false;
    }
    
    // 验证端口范围
    if (isNaN(portNum) || portNum < 1 || portNum > 65535) {
      robotStore.addLog(`端口号无效: ${port}`, 'error');
      return false;
    }
    
    robotStore.updateRobotConfig(ip, portNum.toString());
    robotStore.addLog(`机器人配置已更新: ${ip}:${portNum}`, 'success');
    return true;
  };

  /**
   * 重置机器人配置为默认值
   */
  const resetToDefault = () => {
    robotStore.updateRobotConfig('192.168.1.106', '9090');
    robotStore.addLog('机器人配置已重置为默认值', 'info');
  };

  /**
   * 获取当前配置信息
   */
  const getConfigInfo = () => {
    return {
      ip: robotStore.robotIp,
      port: robotStore.robotPort,
      connectionUrl: robotStore.connectionUrl,
      isConnected: robotStore.isConnected
    };
  };

  return {
    // 配置更新方法
    updateRobotIp,
    updateRobotPort,
    updateRobotConfig,
    resetToDefault,
    
    // 配置信息
    getConfigInfo,
    
    // 直接访问状态
    robotIp: robotStore.robotIp,
    robotPort: robotStore.robotPort,
    connectionUrl: robotStore.connectionUrl,
    isConnected: robotStore.isConnected
  };
}
